// 版权所有 Epic Games, Inc. 保留所有权利。

#pragma once

#include "Kismet/BlueprintFunctionLibrary.h"

#include "LyraActorUtilities.generated.h"

class UObject;
struct FFrame;

UENUM()
enum class EBlueprintExposedNetMode : uint8
{
	/** 独立模式：没有网络的游戏，有一个或多个本地玩家。仍然被认为是服务器，因为它具有所有服务器功能。 */
	Standalone,

	/** 专用服务器：没有本地玩家的服务器。 */
	DedicatedServer,

	/** 监听服务器：一个也有本地玩家的服务器，该玩家正在托管游戏，可供网络上的其他玩家使用。 */
	ListenServer,

	/**
	 * 网络客户端：连接到远程服务器的客户端。
	 * 注意，每个小于此值的模式都是一种服务器，因此检查 NetMode < NM_Client 总是某种服务器。
	 */
	Client
};


UCLASS()
class ULyraActorUtilities : public UBlueprintFunctionLibrary
{
	GENERATED_BODY()

public:
	/**
	 * 获取角色或组件的网络模式（专用服务器、客户端、独立等...）
	 */
	UFUNCTION(BlueprintCallable, Category="Lyra", meta=(WorldContext="WorldContextObject", ExpandEnumAsExecs=ReturnValue))
	static EBlueprintExposedNetMode SwitchOnNetMode(const UObject* WorldContextObject);
};